package busterminalweb.action.scheduleditem;

import busterminal.entity.Route;
import busterminal.entity.ScheduledItem;
import busterminal.entity.service.DaysOfWeek;
import busterminal.persistence.RouteDAO;
import busterminal.persistence.ScheduledItemDAO;
import busterminal.services.ServiceLocator;
import busterminalweb.action.Action;
import busterminalweb.action.ActionResult;
import java.util.Arrays;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Изменить пункт расписания
 */
public class EditScheduledItemAction implements Action {

    /**
     * Выполнить действие
     * @param request запрос
     * @param response ответ
     * @return страница, которой нужно передать управление
     */
    @Override
    public ActionResult execute(HttpServletRequest request, HttpServletResponse response) {
        if (request.getParameter("id") != null) {
            int id = Integer.parseInt(request.getParameter("id"));
            ScheduledItem scheduledItem = ServiceLocator.getService(ScheduledItemDAO.class).read(id);
            request.setAttribute("scheduledItem", scheduledItem);

            List<Route> routeList = ServiceLocator.getService(RouteDAO.class).findAll();
            request.setAttribute("routeList", routeList);

            List<DaysOfWeek> daysOfWeekList = Arrays.asList(DaysOfWeek.values());
            request.setAttribute("daysOfWeekList", daysOfWeekList);

            return ActionResult.forward("scheduleditem/EditScheduledItemView.jsp");
        } else {
            return ActionResult.redirect("scheduled.item.list");
        }
    }

    /**
     * Получить имя действия
     * @return имя действия
     */
    @Override
    public String getName() {
        return "scheduled.item.edit";
    }
}
